perm filename 033LSP.OUT[AID,LSP] blob
sn#702091 filedate 1983-03-01 generic text, type T, neo UTF8
(DECLARE (SETSYNTAX 35 2 35))
(DECLARE (SPECIAL %/#CONTINUE %/#CONTINUE-STACK %/#RETAIN %/#CE
%/#ALIST COMPILE-MACROS UMATCH-ALIST))
(DECLARE (SPECIAL %/#FULL-PREDICATE %/#OCCURS))
(SETQ %/#FULL-PREDICATE NIL)
(DECLARE (FASLOAD STRUCT FAS DSK (MAC LSP)))
(SETQ %/#CONTINUE NIL
%/#CONTINUE-STACK NIL
%/#RETAIN NIL
COMPILE-MACROS NIL
%/#OCCURS NIL
UMATCH-ALIST NIL)
(DEFUN %%OCCURS (X L)
(COND ((MEMQ L (CDR (ASSQ X %/#OCCURS))) T)
((EQ X L) NIL)
(T (%%OCCURS1 X L L))))
(DEFUN %%OCCURS1 (X L TOP)
(COND ((NULL L) NIL)
((EQ X L)
((LAMBDA (ENTRY)
(COND (ENTRY (NCONC ENTRY (LIST TOP)))
(T (SETQ %/#OCCURS (CONS (LIST X TOP) %/#OCCURS)))))
(ASSQ X %/#OCCURS))
T)
((ATOM L) NIL)
(T (OR (%%OCCURS1 X (CAR L) TOP) (%%OCCURS1 X (CDR L) TOP)))))
(DECLARE (SPECIAL -SEEN-))
(DEFUN %%CHECK (L) ((LAMBDA (-SEEN-) (%%CHECK1 L)) NIL))
(DEFUN %%CHECK1 (L)
(COND ((MEMQ L -SEEN-) L)
((ATOM L) L)
((HUNKP L) (SETQ -SEEN- (CONS L -SEEN-)) L)
((EQ (CAR L) '-SPECIAL-FORM-) (CDR L))
((MEMQ (CAR L)
'($R RESTRICT ⊗R $IR IRESTRICT ⊗IR $CH $CHOOSE))
(CADR L))
(T (SETQ -SEEN- (CONS L -SEEN-))
(CONS (%%CHECK1 (CAR L)) (%%CHECK1 (CDR L))))))
(DEFUN %%SPECIAL-FORMP (X)
(COND (%/#FULL-PREDICATE NIL)
((ATOM X)
(OR (EQ X '-SPECIAL-FORM-)
(AND (NOT (EQ X '=))
(MEMQ (COND ((EQ (TYPEP X) 'SYMBOL)
(GETCHAR X 1)))
'(? * =)))))
(T (OR (EQ (CAR X) '-SPECIAL-FORM-)
(AND (NOT (ATOM X))
(MEMQ (CAR X)
'($R RESTRICT ⊗R $IR IRESTRICT ⊗IR)))))))
(COMMENT CATCH-MATCH)
(DECLARE (SETQ DEFMACRO-FOR-COMPILING NIL) (MAPEX T))